package com.xinrui;

import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class ExcelDemo {
    public static void main(String[] args) throws IOException {
        readFromExcel();
//        writeFromExcel();
    }

    /**
     * 读取Excel表格
     *
     * @throws IOException
     */
    public static void readFromExcel() throws IOException {
        //创建工作簿
        XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream("D://read.xlsx"));
        //获取工作表，既可以根据工作表的顺序获取，也可以根据工作表的名称获取
        XSSFSheet sheetAt = workbook.getSheetAt(0);
        //获取当前工作簿的最后一行
        int lastRowNum = sheetAt.getLastRowNum();
        for (int i = 0; i <= lastRowNum; i++) {
            //根据行号获取行对象
            XSSFRow row = sheetAt.getRow(i);
            //获取有数据的最后一列
            int lastCellNum = row.getLastCellNum();
            for (int j = 0; j < lastCellNum; j++) {
                //获取当前列的单元格数据
                String stringCellValue = row.getCell(j).getStringCellValue();
                System.out.print(stringCellValue + " ");
            }
            System.out.println();
        }
        workbook.close();
    }

    /**
     * 创建Excel表格
     * @throws IOException
     */
    public static void writeFromExcel() throws IOException {
        // 创建工作簿，内存中
        XSSFWorkbook workbook = new XSSFWorkbook();
        // 创建工作表
        XSSFSheet sheet = workbook.createSheet("测试写excel");
        // 在工作表下创建行
        XSSFRow row = sheet.createRow(0);
        // 使用行创建单元格 并且给单元格赋值
        row.createCell(0).setCellValue("姓名");
        row.createCell(1).setCellValue("年龄");
        row.createCell(2).setCellValue("所在地");

        row = sheet.createRow(1);
        row.createCell(0).setCellValue("张三");
        row.createCell(1).setCellValue("18");
        row.createCell(2).setCellValue("北京");

        row = sheet.createRow(2);
        row.createCell(0).setCellValue("李四");
        row.createCell(1).setCellValue("19");
        row.createCell(2).setCellValue("上海");
        // 保存工作簿，持久化本地硬盘里
        workbook.write(new FileOutputStream(new File("D://createFrom.xlsx")));
        // 关闭工作簿
        workbook.close();
    }
}
